package entidade;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
@SequenceGenerator(name = "PK_LANCAMENTO", sequenceName = "GEN_LANCAMENTO_ID")
@Table(name = "lancamento")
public class Lancamento extends AbstractModelObject {

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO, generator = "PK_LANCAMENTO")
	@Column(name = "cd_lancamento")
	private Integer codigo;
	@JoinColumn(name = "cd_usuario", referencedColumnName = "cd_usuario")
	@ManyToOne(fetch = FetchType.LAZY)
	private Usuario usuario;
	@JoinColumn(name = "cd_divisao", referencedColumnName = "cd_divisao")
	@ManyToOne(fetch = FetchType.LAZY)
	private Divisao divisao;
	private Boolean ativo;
	private String tipo;
	@Column(name = "dtvencimento")
	@Temporal(TemporalType.DATE)
	private Date dataVencimento;
	private String historico;
	private Float valor;
	@Column(name = "dtpagamento")
	@Temporal(TemporalType.DATE)
	private Date dataPagamento;

	public Integer getCodigo() {
		return codigo;
	}

	public void setCodigo(Integer codigo) {
		this.codigo = codigo;
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		Usuario oldValue = this.usuario;
		this.usuario = usuario;
		firePropertyChange("usuario", oldValue, this.usuario);
	}

	public Divisao getDivisao() {
		return divisao;
	}

	public void setDivisao(Divisao divisao) {
		Divisao oldValue = this.divisao;
		this.divisao = divisao;
		firePropertyChange("divisao", oldValue, this.divisao);
	}

	public Boolean isAtivo() {
		return ativo;
	}

	public void setAtivo(Boolean ativo) {
		Boolean oldValue = this.ativo;
		this.ativo = ativo;
		firePropertyChange("ativo", oldValue, this.ativo);
	}

	public String getTipo() {
		return tipo;
	}

	public void setTipo(String tipo) {
		String oldValue = this.tipo;
		this.tipo = tipo;
		firePropertyChange("tipo", oldValue, this.ativo);
	}

	public Date getDataVencimento() {
		return dataVencimento;
	}

	public void setDataVencimento(Date dataVencimento) {
		Date oldValue = this.dataVencimento;
		this.dataVencimento = dataVencimento;
		firePropertyChange("dataVencimento", oldValue, this.dataVencimento);
	}

	public String getHistorico() {
		return historico;
	}

	public void setHistorico(String historico) {
		String oldValue = this.historico;
		this.historico = historico;
		firePropertyChange("historico", oldValue, this.historico);
	}

	public Float getValor() {
		return valor;
	}

	public void setValor(Float valor) {
		Float oldValue = this.valor;
		this.valor = valor;
		firePropertyChange("valor", oldValue, this.valor);
	}

	public Date getDataPagamento() {
		return dataPagamento;
	}

	public void setDataPagamento(Date dataPagamento) {
		Date oldValue = this.dataPagamento;
		this.dataPagamento = dataPagamento;
		firePropertyChange("dataPagamento", oldValue, this.dataPagamento);
	}
}
